Complete mapping of fractal potential and field lines

ABSTRACT

Faster methods for topological categorization and field line calculations are developed by using decomposition regions together with the self-winding techniques first developed in a prior patent application. A point iteration technique provides direct calculation of low order digits of winding counts without use of complex intervals. Easy to calculate derivatives define decomposition interval boundaries which substitute for methods using the slower complex interval processing of the prior patent. Methods common to this and the prior patent are developed for visualizing conformal mappings of iterated functions.

CROSS-REFERENCE TO RELATED APPLICATIONS; BENEFIT CLAIM

This application is a divisional of U.S. patent application Ser. No.13/323,648, filed Dec. 12, 2011; which is a continuation of U.S. patentapplication Ser. No. 11/757,858, filed Jun. 4, 2007, now U.S. Pat. No.8,095,583, the entire contents of which are hereby incorporated byreference for all purposes as if fully set forth herein. The applicanthereby rescinds any disclaimer of claim scope in the parent applicationsor the prosecution history thereof and advises the USPTO that the claimsin this application may be broader than any claim in the parentapplications.

See patent application for “EXPLOITATION OF TOPOLOGICAL CATEGORIZATIONOF CHAOTIC AND FRACTAL FUNCTIONS, INCLUDING FIELD LINE CALCULATIONS”,Ser. No. 11/336,187 filed Jan. 19, 2006, the entirety of which isincorporated herein by reference.

See patent application for “COMPLEX AND HYPERCOMPLEX INCLUSIVE INTERVALEXPRESSION EVALUATIONS WITH STABLE NUMERIC EVALUATIONS AND PRECISIONEFFICACY TESTING”. The embodiments of that application are included inthe above prior application, and this application Ser. No. 11/336,166filed Jan. 19, 2006.

FEDERALLY SPONSORED RESEARCH

Not applicable.

SEQUENCE LISTING OR PROGRAM

Short code sections are found in the text.

BACKGROUND OF INVENTION

While implementing an earlier patent, new embodiments of topologicalcategorization sprung from serendipitous bugs which revealed a farfaster technology was possible.

1. Field of Invention

This invention generally relates to the chaotic functions and Julia setfractals which are generated from numerically iterating complexarithmetic functions.

2. Prior Art

Prior Art by Others

Decomposition of fractal and chaotic functions has been around for atleast two decades. Recently, I discovered that a commercially availableprogram, Ultra Fractal, not only can perform black and whitedecomposition, but that for each decomposition area, a partial “fieldline” value can be obtained. A reference to the user manual for thisprogram is provided, together with a description and picture of atypical result, is given below.

The prior art can be used, in a limited way, with graphics techniquessuch as texture mapping. However, in the picture below, one can see eachpotential band is composed of 2 n number of gradient regions, where n isan integer which increases by 1 for each successive inner band. Based onthe field line and potential, there is no way to disambiguate the fieldlines from one region from another region at the same potential; thuseach region would receive the same coloring algorithm. Another problemis that there is imprecision in the continuity when moving from onepotential band to a higher or lower band. All these problems relate tothe simple problem that within the prior art of others, there is no wayto perform a one-to-one smooth conformal mapping between the domain ofcomplex numbers and the potential and field line values.

The online user manual for Ultra Fractal is found athttp://www.ultrafractal.com/download.html. On page 168, I found this:

Decomposition

The Decomposition coloring algorithm colors fractals according to the“angle” of the last value of z from the fractal formula. The angle isdecomposed and distributed over the full range of the gradient. Thiscoloring algorithm tends to create circular bands all over the imagethat contain all colors from the gradient. Low values (for example 4)for the bail-out parameter of the fractal formula usually give the bestresults. With convergent fractal types, such as Newton or Nova,Decomposition usually does not create smoothly colored images, but itcan still be interesting.

See Also

Basic

Binary Decomposition

Standard coloring algorithms

FIG. 42 shows this picture.

In this patent application, refer to FIG. 25, Traditional Self Resolver

Embodiment, which diagrams this technique as I understand it.

Prior Art by this Author

My patent application for “EXPLOITATION OF TOPOLOGICAL CATEGORIZATION OFCHAOTIC AND FRACTAL FUNCTIONS, INCLUDING FIELD LINE CALCULATIONS”contains the only prior art on the process of self-winding iteratedfunctions, as known to me: see the above references to related patentapplications. That document provided a method for calculating field linevalues, which together with potential values, allowed for the completeconformal mapping between the complex domain and the potential and fieldline values. However, as complete as it was, the process is hampered bythe performance of complex interval processing.

OBJECTS AND ADVANTAGES

Accordingly, several objects and advantages of the invention are:

Speed:

The previous patent application used complex interval processing todefine valid regions of the complex plane where a winding count could beassigned. The new methods use only the arithmetic necessary to calculatethe iterated function, along with, sometimes, the derivatives. Becausemost iterations are based on simple multiplies and additions, thederivatives are quick to calculate, particularly because the functionsare analytic (i.e. Cauchy-Schwarz equations), the partials containredundant processing which can be eliminated.

Memory:

If one is only calculating local decomposition coordinates (describedlater), then the full winding count is not needed, and elaborate memorystructures are not needed.

Simplified Arithmetic:

Because this method typically requires iterations using only adds andmultiplies, it is much easier to implement ultra-high precision softwarenumber systems which can perform the iterations. Hardware floating pointis still useful when implementing functions (e.g. Log) which are appliedto the resulting iteration values, where ultra-high precision is nolonger needed.

Winding Count Shifting:

In order to create conformal mappings with the new methods, it is usefulto keep the decomposition regions as large as possible. However, toobtain precision, each point must be iterated out to a very large escapedistance, which results in more iteration steps. Each iteration stepshrinks the decomposition region size; that is, the number of regionsfor each potential band is increased dramatically. A new techniqueallows one to recover the original size of the regions so that theyroughly maintain or improve the size as shown in the prior art, above,but at the same time the extra precision ensures that continuity ismaintained across potential bands. FIG. 18 shows a typical decompositionof the Mandelbrot. Note that the numerals are texture mapped onto eachregion and that the regions from successive potential bands exactlycorrelate.

Conclusion

Performance is improved over prior results. Further, objects andadvantages will become apparent from a consideration of the ensuingdescription and drawings.

SUMMARY

In accordance with this invention, a topological categorization methodbased on self-winding iterations offers improved performance. Thisdocument relies heavily on terminology, descriptions, and figures of theprior patent, “EXPLOITATION OF TOPOLOGICAL CATEGORIZATION OF CHAOTIC ANDFRACTAL FUNCTIONS, INCLUDING FIELD LINE CALCULATIONS”. Figures areassigned numbers in succession after the numbers utilized in the priorpatent.

DRAWINGS

From included Prior patent application:

FIG. 1 shows the basic components for evaluating an interval expression,as in the prior art.

FIG. 2 shows a list of optimal inclusive disc interval operators.

FIG. 3 shows the setup of points to the left and right of crest of acurve, which is the bounded target of a nonlinear search.

FIG. 4 shows the precision efficacy evaluation embodiment for evaluatingan interval expression while detecting inadequate precision.

FIG. 5 block diagram for generic calculation of escape distances ofdiscrete dynamic system

FIG. 6 block diagram of an interval escape categorization to establishinterval and principle escape sequences

FIG. 7 block diagram for finding winding counts on independent iterationlevels

FIG. 8 block diagram for iteration, forward and reverse, of a windingpoint

FIG. 9 block diagram for resolving winding escape sequences,

FIG. 10 block diagram for creation of a function for correlating valuesterminating at different iteration levels,

FIG. 11A block diagram of traditional method for iterating the potentialwithin a discrete dynamic system,

FIG. 11B block diagram for using automatic distance values andcorrelation functions

FIG. 12A block diagram of system for creating winding escape chains anditerating field lines,

FIG. 12B block diagram of automated system for creating winding escapechains

FIG. 13A-E block diagrams of enhancements for categorizing intervals

FIG. 14 block diagram for Julia set enhancement for checking intervalsfor escaping

FIG. 15 block diagram incorporating a combination of optimizations forchecking intervals for escaping

FIG. 16A a diagram of enhanced data structure for storing distances atwhich high precision iterations are completed.

FIG. 16B A diagram for automatic calculation of termination distance forpoint iterations

FIG. 17 A diagram for creation of winding escape chains

From this patent application

FIG. 18 is called the Enumerated Decomposition Regions and shows acomputer generated image of labeled decomposition regions of theMandelbrot.

FIG. 19, the Modulo Banding Creator Embodiment, shows the process ofcreating a modulo banding for a modulo point.

FIG. 20, Winding Digit Adjustment Calculator Embodiment, shows thecalculation of the largest winding digit adjustment to increase thedecomposition field size without creating any errors in the windingcount.

FIG. 21 shows the components for a Full Modulo Iterator Embodiment whichis used for self-winding during iteration to produce a modulo point.

FIG. 22 shows the components for an Optimized Modulo Iterator Embodimentwhich is used for self-winding during iteration to produce a modulopoint.

FIG. 23 shows the Codomain Point Resolver Embodiment. This embodimentshows how to resolve a modulo point by donating the winding count from adonor codomain point.

FIG. 24A-D show the Same Level Resolve Diagrams to illustrate the logicof assigning winding count adjustments for from a donor codomain point.

FIG. 25: The Traditional Self Resolver Embodiment produces modulo pointsdirectly from domain points in a traditional manner without self-windingor a winding digit adjustment. THIS IS PRIOR ART, see introductorymaterial on prior art for this patent application.

FIG. 26: The Self Codomain Resolver Embodiment produces codomain pointsdirectly from domain points and incorporates a winding digit adjustmentwhich is non-zero.

FIG. 27: The Traditional Decomposition Interval Embodiment usestraditional derivatives to set the size of a decomposition intervalsurrounding an iterated point.

FIG. 28: The Modulo Decomposition Interval Embodiment uses traditionalderivatives together with self winding to set the size of adecomposition interval surrounding an iterated point

FIG. 29: The Codomain Interval Resolver Embodiment creates a codomaindecomposition interval from a decomposition quantified interval and acodomain point.

FIG. 30: The Codomain Interval Constructor Embodiment constructs acodomain decomposition interval from a donor codomain point and a nearbydomain point.

FIG. 31 shows the Codomain Chain Embodiment, a method for creating achain of overlapping (or touching) codomain intervals to cover a path orarea.

FIG. 32A to FIG. 32E show diagrams illustrating overlapping intervals tohelp in the description of FIG. 31.

Figures Utilizing Codomain or Interval Processing:

The following figures create technology which can be based in theoriginal prior patent's interval methods or the codomain technology justintroduced.

FIG. 33 shows the Generic Anchored Chain Embodiment is a generic methodfor finding an anchored codomain point and building an interlockingchain.

FIG. 34 shows a Periphery Pathfinder Embodiment finds a path to theoutside using periphery points of successive domain intervals.

FIG. 35 shows a Jumper Pathfinder Embodiment, which beginning with anydomain point, no matter how deep inside a chaotic function, finds a pathto the outside using periphery points of successive domain intervals.

FIG. 36 shows the Path Resolver Embodiment, a method for finding a chainof domain intervals to resolve an arbitrary domain point.

FIG. 37 shows the Buffered Path Resolver Embodiment, a method forfinding a chain of domain intervals to resolve an arbitrary domain pointand saving the resolved intervals.

FIG. 38 shows the Pixel Center Bitmap Iterator Embodiment for ensuringthat all pixels are assigned a codomain value based on iterating thedomain point at the center of a pixel.

FIG. 39 shows the Hybrid Bitmap Iterator Embodiment incorporating twomethods for finding pixel values.

FIG. 40 shows the Automatic Transformer Embodiment which is used toorient and scale a view of the iterated function.

FIG. 41 shows the Generic Visualizer Embodiment: which automaticallytransforms and draws a full bitmap image.

FIG. 42 shows prior art based on Ultra Fractal's coloring of“decomposition”.

REFERENCE NUMERALS From Prior Patent Application

-   -   050 inclusive metacomplex scalar    -   052 inclusive rigid body rotation    -   054 inclusive invert operator    -   056 unit power operator    -   058 zero power operator    -   060 optimal inclusive additive operator    -   062 inclusive metacomplex shape converter    -   064 inclusive metacomplex range    -   066 stable inclusive complex multiplication    -   068 stable inclusive quaternion multiplication    -   070 cubic inclusive quaternion multiplication    -   072 inclusive complex contraction power    -   074 inclusive hypercomplex contraction power    -   076 stable inclusive complex sqrt power    -   078 stable inclusive hypercomplex sqrt power    -   080 inclusive robust complex expansion power    -   082 inclusive hypercomplex expansion power    -   084 stable inclusive complex square power    -   086 stable inclusive hypercomplex square power    -   088 stable inclusive metacomplex three halves power    -   100 interval expression sequencer    -   102 interval evaluator    -   104 interval operator pool    -   110 dual evaluator    -   112 dual operator pool    -   114 dual tester    -   116 precision iterator    -   200 parametric interval iterator    -   202 level iterator    -   204 escape categorizer    -   205 category escape initializer    -   206 indeterminate checker    -   207 escape distance solver    -   208 cell iterate analyzer    -   209 precision escape initializer    -   210 cell categorizer    -   211 principle escape categorizer    -   220 branchcut adjuster    -   222 same level resolver    -   224 self winding operator pool    -   225 self winding dominant stepper    -   226 anchor resolver    -   229 level change resolver    -   232 self winding iteration resolver    -   250 dominant splitter    -   251 complex dominant splitter    -   252 dominant reducer    -   254 inferior reducer    -   256 escape formula replacer    -   258 positive real root solver    -   260 metacomplex extreme absolute converters    -   262 common iterate replacer    -   264 escape distance driver    -   270 dominant extractor    -   272 coefficient power separator    -   274 level degree pair correlator    -   276 commonality correlator    -   278 correlation driver    -   300 potential point iterator    -   302 commonality function generator    -   310 field line point iterator    -   320 winding escape sequencer    -   330 topological storage manager    -   340 winding escape chain constructor    -   From This patent application    -   500 maximal reducer, see FIG. 20    -   502 winding adjustment iterator, see FIG. 20    -   504 WINDING DIGIT ADJUSTMENT CALCULATOR EMBODIMENT, is FIG. 20    -   510 continuum evaluator, see FIG. 19    -   512 iteration count differencer, see FIG. 19    -   514 floor fraction separator, see FIG. 19    -   516 argument extractor, see FIG. 19    -   518 angle fractionalizer, see FIG. 19    -   520 field modulo maker, see FIG. 19    -   522 MODULO BANDING CREATOR EMBODIMENT, is FIG. 19, see FIG. 21    -   530 full modulo resolver, see FIG. 21    -   532 FULL MODULO ITERATOR EMBODIMENT, is FIG. 21, see FIG. 22    -   534 OPTIMIZED MODULO ITERATOR EMBODIMENT, is FIG. 22    -   536 TRADITIONAL MODULO EMBODIMENT, is FIG. 25    -   540 traditional iterator, see FIG. 22, see FIG. 25    -   542 optimized modulo resolver, see FIG. 22    -   550 codomain same level resolver, see FIG. 23    -   552 codomain up level resolver, see FIG. 23    -   554 codomain down level resolver, see FIG. 23    -   556 codomain resolve chooser, see FIG. 23    -   558 CODOMAIN POINT RESOLVER EMBODIMENT of FIG. 23, see FIG. 29,        FIG. 30    -   560 winding digit limiter, see FIG. 26, see generic point        resolver (638)    -   562 traditional banding, see FIG. 25    -   566 SELF CODOMAIN RESOLVER EMBODIMENT, is FIG. 26    -   568 TRADITIONAL SELF RESOLVER EMBODIMENT, is FIG. 25    -   572 traditional derivative iterator, see FIG. 27, see FIG. 28,        FIG. 35, FIG. 40    -   574 decomposition interval quantifier, see FIG. 27, see FIG. 28    -   576 Traditional Decomposition Interval Embodiment, is FIG. 27    -   580 codomain decomposition constructor, see FIG. 29, FIG. 30    -   588 modulo resolver method, see FIG. 28,    -   590 modulo decomposition modifier, see FIG. 28    -   592 Decomposition Interval Method: see FIG. 30    -   594 Modulo Codomain Interval Constructor Embodiment: FIG. 30    -   596 codomain interval constructor embodiment: is FIG. 30, see        FIG. 31    -   598 Codomain Chain Maker, see FIG. 31    -   599 Codomain Chain Embodiment is FIG. 31,    -   604 self resolver method, see FIG. 33, see FIG. 37    -   See FIG. 25, Traditional Self Resolver Embodiment (Prior Art)    -   See FIG. 26, Self Codomain Resolver Embodiment,    -   Also see the component called the anchor resolver (226) of prior        patent under FIG. 7,    -   FIG. 7 SAME LEVEL WINDING INTERVAL EMBODIMENT    -   606 generic resolving chain method, see FIG. 33, see FIG. 37    -   See Codomain Chain Embodiment (599) of FIG. 31    -   See FIG. 17, Winding Chain Embodiment, in the prior patent        application.    -   608 generic anchored chain embodiment is FIG. 33, see FIG. 36,        FIG. 37    -   610 decomposition interval method, see FIG. 34    -   See FIG. 27, Traditional Decomposition Interval Embodiment    -   See FIG. 29 Modulo Decomposition Interval Embodiment    -   612 anchor check, see FIG. 34, see FIG. 35    -   614 periphery point finder, see FIG. 34, see FIG. 35    -   616 domain path collector, see FIG. 34, see FIG. 35    -   618 periphery pathfinder embodiment, FIG. 34    -   620 cell categorizer embodiment, See FIG. 6 of prior patent,        also see FIG. 35    -   622 directional interval initializer, see FIG. 35    -   624 safe interval looper, see FIG. 35    -   628 jumper pathfinder embodiment, FIG. 35    -   630 escape pathfinder method. See FIG. 26    -   Typical embodiments include:    -   618 periphery pathfinder embodiment, FIG. 34    -   628 jumper pathfinder embodiment, FIG. 35    -   632 buffered escape pathfinder method, see FIG. 37    -   634 resolved interval buffer, see FIG. 37    -   636 buffered path resolver embodiment. FIG. 37, see FIG. 38,        FIG. 9    -   638 generic point resolver, see FIG. 38, FIG. 39    -   640 bitmap render loop, see FIG. 38, FIG. 39    -   642 Pixel Center Bitmap Iterator Embodiment is FIG. 38.    -   646 memory focus manager, see FIG. 39    -   648 priority adjacency chain method, see FIG. 39    -   650 Hybrid Bitmap Iterator Embodiment is FIG. 39    -   652 orientation adjuster, FIG. 40    -   658 automatic zoomer, FIG. 40    -   659 viewport target selector, see FIG. 41    -   660 Automatic Transform Embodiment, is FIG. 40, see FIG. 41    -   662 generic bitmap iterator, see FIG. 41    -   664 pixel processor, see FIG. 41

DETAILED DESCRIPTION

FIG. 18 Enumeration of Decomposition Regions

FIG. 18 is called the Enumerated Decomposition Regions and shows acomputer generated image of labeled decomposition regions of theMandelbrot. This figure is provided for context and understanding ofthis patent application. This discussion also provides for terminologyused throughout this document.

The image shows solid lines and labels consisting of dotted lines andnumerals separated by a colon; these glyphs are texture mapped onto acoordinate system based on potential lines and field lines, where theterms potential lines and field lines are taken from classic discussionsof the subject. The solid lines which surround the central image aretraditionally called potential lines. Looking carefully, one can alsosee lines which begin on a potential line and which extend perpendicularto the potential lines towards the boundary of the central image; theselines are called field region lines, which is my terminology. Potentiallines and field region lines form a decomposition of the area outsidethe central figure boundary. Each of the decomposition regions is shapedas a distorted rectangle and bounded by two potential lines and twofield region lines. According to classic mathematical iterated functiontheory, each point outside the central figure can be mapped one-to-oneonto a single disc. As will be seen, the decomposition regions areuseful in computing this one-to-one mapping. In this vein, eachdecomposition region has a unique label or enumeration, surrounded bydashes to reinforce the extent of the region.

For efficiency in processing, these regions should be as large as ispossible, and important embodiments of this patent are used for thispurpose.

Iteration Expressions

An iteration expression is called a complex or metacomplex iterationexpression in the prior patent. As described therein, the expression canbe separated into a dominant expression and an inferior expression. Thedominant expression has an associated iterate power factor, as describedin the prior patent application under the description of FIG. 10,coefficient power separator (272). The iterate power factor is easy tofind. For example, in the dominant expression z p, (z to the integerpower p), the iterate power factor is p. For the Mandelbrot expression,z 2+z0, the iterate power factor is 2.

As points external to the inner figure are iterated, as for example,zNext=zLast p+ZFirst, the absolute value of the zNext iterate (complexor metacomplex) eventually reaches a global escape distance. At thisdistance any iterate (i.e. globally for all points) will eventually keepiterating to larger and larger values until a precision escape distanceis reached, and iterations are stopped. The precision escape count isthe number of iterations to just achieve the specified precision escapedistance.

Potential Band, Potential Band Integer

The labels in FIG. 18 are in the format of DDD:B. The “B” value istypically provided in decimal format and is indicative of the precisionescape count. The B value is equal to this precision escape count minusa winding digit adjustment which is a zero or positive integer. Theresult is called the potential band. Therefore, all points in the samepotential band escape to the precision escape distance in an iterationcount equal to the “B” value plus the winding digit adjustment. As willbe seen later, the winding digit adjustment is important in the goal ofobtaining large decomposition regions. For example, in the generation ofFIG. 18, the winding digit adjustment was 4. The top label “0:1” has apotential band value of “1”, which implies that each point in thatpotential band must escape in exactly 1+4 iterations. There is also apotential band of 1 on the bottom of FIG. 18, labeled “1:1”. Notice thateach successive potential band divides into exactly 2 new potential bandregions at the next higher potential band. Therefore the potential bandsfor B=3 is equal to 2 3 which equals 8. Lower potential bands of 0, −1,−2, are not divided into separate regions. Note that when the iteratepower factor is the generic “p”, this subdivision is into “p” regions.For example for iteration expression “z 4+z0”, the potential band of “3”has 4 3 or 64 regions.

The potential band can be identified as simply the “B” value of apotential band. This is also called the potential band integer.

Potential Band Fraction

In mathematics, continuous functions are useful, particularly whentaking derivatives. But how are we to associate fractional values toincreasing potential values in a potential band? A continuous changefrom the potential line at the outer side of the potential band to thepotential line on the inner side of a potential band is needed.

A fraction ranging from zero to one is associated with each point in apotential band, and is called the potential band fraction. The fractionindicates the transition from the outer potential line (a zero fractionwhich underflows to the boundary of the next outer potential band) tothe next inner potential line (a fraction of 1 which overflows to thenext potential band).

To achieve continuity between each potential band, a continuous functionindicating the amount of transversal is needed. This number can becalculated in a variety of ways, but an elegant formal mathematicalmethod is proposed here: take the negated value of the real logarithm,base p, of the result for the potential value; and then assign theinteger and fractional parts to be the potential band integer andpotential band fraction, respectively. Ideally, the integer part mustretain its direct association with the precision escape count.

Field Bands: Integer and Fraction, Field Line

The labels in FIG. 18 are in the format of DDD:B. The “D” values aredigits in the base of p, where p is the iterate power factor. Noticethat the number of digits correlates exactly to the potential bandinteger. For example, if the potential band integer is 4, we have“DDDD:4”, with 4 digits of “DDDD”. Higher order digits, which may occuras an artifact of iteration, are discarded. Note that on each potentialband, for each successive decomposition region taken incounter-clockwise rotation, the DDD number increments by one. Thisapproach, in my terminology, is called positive branchcut field banding,because, of the discontinuity on the positive real axis. Other methodsare possible. Consider p=2, with the high order digit sign extended as atwo's complement number; in this case, the branchcut will occur on thenegative real axis. All such methods represent the same underlying data,and this document will use the positive branchcut field banding toassign digits and eliminate sign extensions.

The actual field band is calculated in several steps. First the windingcount is computed as described in the prior patent. Then a signedfraction is computed as the complex argument of the final iteration (thesame as the principle part of the imaginary part of the complexlogarithm of the final iteration) and is divided by 2 times Pi,resulting in a fraction between −0.5 and 0.5. The fraction is added tothe integer winding count and divided by p raised to the power specifiedby the winding digit adjustment. The mathematical floor function is usedto extract the integer part, which becomes the field band integer, andthe remaining fraction is the field band fraction. However, don't forgetto chop off the excess high order digits of the field band integer, asdescribed above.

Field Lines/Potentials Versus Banding

Although the author finds it convenient to use field bands and potentialbands to implement algorithms and describe methods, the traditional useof field lines and potentials as described in classic literature aremathematically equivalent in that there is a one-to-one mapping betweeneach formulization. The previous patent emphasized the classic approach.However, because this patent uses the decomposition regions as a basisfor algorithms, the banding approach is the approach judged best forthis description.

Domain/Codomain

The term “domain”, as in domain interval or domain point refers tocomplex intervals and points used as the start of iteration. Thecodomain intervals and codomain points refer to the final iterationvalues, which are usually expressed by field band values and potentialband values. However, in some embodiments where implementations may useforms from the prior patent, then the codomain values may actually bereferencing potentials and field lines. But since these two systems areequivalent, the resulting ambiguity should disappear once animplementation is chosen.

Special Point Values

This document uses several point types representing the results ofiteration. In the following descriptions, the integers of an iterationcount and a potential band differ only by the integral winding digitadjustment. Because a winding digit adjustment, once set, is constant,the iteration count and potential band are equivalent and the redundancycan be removed by eliminating one of them. However, for clarity, theyare both specified.

Modulo Point:

Iteration Count: this is the number of steps to iterate the domain pointto obtain an absolute value equal to at least the precision escapedistance.

Field Band Fraction: the field band fraction is constructed from boththe complex Argument function applied to the last complex iterate and tothe low order digits of the winding count.

Field band integer: for a modulo point, the field band integer isundefined or contains errors. In systems wishing to save space at theexpense of a new data structure, a modulo point can be devoid of thefield band integer. However for simplicity and clarity in this document,the field band integer is kept available.

Potential Band Data: Always Computed.

Traditional Point:

Description: the traditional method of iterating does not compute anycorrect digits for winding count. However, it can contain the samecorrect values as a modulo point whenever the winding digit adjustmentis zero! Thus, the traditional point can become a modulo point when thewinding digit adjustment is zero.

Codomain Point: Contains:

Description: the codomain point contains all information forconstructing field lines, potentials, or the field band and potentialbands described in this document. In essence, it is a modulo point whichincludes a field band integer.

FIG. 19: Modulo Banding Creator Embodiment

FIG. 19, the Modulo Banding Creator Embodiment, shows the process ofcreating the modulo banding for a modulo point. The steps of thisprocess were briefly discussed in the discussion of FIG. 18.

Inputs:

The input parameters for this embodiment are shown near the top andcenter-top of FIG. 19. The term called modulo banding parametersencompasses all of the following parameters, as indicated by roundedcorner rectangles in FIG. 19.

Continuum potential commonality function: this function is the same asthat described in the prior patent for a potential commonality function,except here, the integer portion of the result is correlated to theescape iteration count. The most obvious choice is to take an additionalreal logarithm with base “p” is applied to the potential, where “p” isthe iterate power factor. Refer to the description of the commonalitycorrelator (276) in FIG. 10, for details in the prior patentapplication.

Field line commonality function: refer to the description of thecommonality correlator (276) in FIG. 10, for details in itsconstruction.

Winding digit adjustment: this is usually a constant small integer tocontrol digit shifting, as described for FIG. 18. Also see FIG. 20 forautomatic calculation of this value.

Last iterate data: this data is obtained from the iteration of a point.The last point is simply the iterated value when the absolute value ofthe iterated value reaches the precision escape distance. The windingcount is the accumulated winding count. The winding count may haveerrors in high order digits, provided that these digits are beyond thedigit specified by the winding digit adjustment. Finally, the iterationcount is simply the number of iterations to reach the precision escapedistance.

Outputs:

Modulo banding: this is the potential banding and field band fraction.

Components:

Continuum Evaluator (510):

See prior patent for a discussion of the potential function. Thiscomponent, as shown in FIG. 19 on the middle left of the diagram,produces a real valued expression in a single variable called theunadjusted potential band. For dominant expressions of the form “z p”,the continuum evaluator (510) can be as simple as taking the reallogarithm of the potential function, base “p”. Consider. For thedominant expression of z p, the potential, in both the prior patent andclassic literature, is given by Log [Abs[zLast]]/p n, where n is theiteration steps, p is the iterate power factor, and zLast is the lastiterate value. Also, Log [p,expr] represents the real logarithm, base p,of the positive real expression expr. By taking the negation of the reallogarithm, of that potential, base p, we have −Log [p,Log[Abs[zLast]]+n−wda, where wda is the winding digit adjustment. Theinteger part, the potential band integer, is taken as the mathematical“Floor” function, and the remaining positive part is the potential bandfraction.

However, in the potential commonality function includes other factors,such “c” in the expression “c*z p”, where c is a constant, then thepotential function should be altered: refer to the prior patent. In thiscase, the input expression, called the continuum potential commonalityfunction, is altered so that each successively higher iteration, n, thenumber of iteration steps to reach the precision escape distance,produces a potential band integer of 1 greater.

Iteration count differencer (512): This component simply subtracts thewinding digit adjustment, an integer, from the unadjusted potentialband, as shown in FIG. 19. The result is called the integrated potentialband because it contains both the integer and fractional parts. If thewinding digit adjustment is known to always be zero, then this componentis null, and the unadjusted potential band becomes the integratedpotential band.

Floor fraction separator (514): This component can be null when thefraction and integer parts of the potential band are stored as a singlevalue. Otherwise, the mathematical Floor function is used to extract theinteger part and the fraction is the leftover value.

Argument extractor (516): this component takes the last point of theiteration and determines the principle argument angle as a value withinthe interval of (−Pi, Pi].

Angle fractionalizer (518): this component divides the principle angleby 2 Pi, to convert the angle to value in the interval of (−0.5 to 0.5].

Field modulo maker (520): this component takes the winding count,iteration count, and winding digit adjustment, field line commonalityfunction, together with the principle fraction, to create the fieldband. The fraction is added to the integer winding count and divided byp raised to the power specified by the winding digit adjustment. Themathematical floor function is used to extract the integer part, whichbecomes the field band integer, and the remaining fraction is the fieldband fraction. However, don't forget to chop off the excess high orderdigits of the field band integer, as described above. The field bandinteger may not always be correct, and therefore the resulting point isusually referenced as a modulo point and not a codomain point.

Operation:

Processing proceeds from top to bottom along two separate paths, one forthe potential band and one for the field band; the results are typicallycombined as a single data structure.

FIG. 20: Winding Digit Adjustment Calculator Embodiment

FIG. 20, Winding Digit Adjustment Calculator Embodiment, shows thecalculation of the largest winding digit adjustment to increase thedecomposition field size without creating any errors in the windingcount.

Inputs:

Complex iteration expression: this was described data in the priorpatent application when discussing FIG. 5.

Precision escape distance: this distance is the minimum escape distanceto ensure high precision of a chaotic iteration. General purposealgorithms to find this value are found in the prior patent application.

Winding adjustment escape: this is the distance to begin an iteration tofind a winding digit adjustment. The global escape distance is a goodchoice. For algorithms to calculate the global escape distance, refer tothe prior patent application.

Outputs:

Winding digit adjustment: this is a small integer. For example, 4.

Components:

Maximal reducer (500): See the description of the inferior reducer (254)in the prior patent application. The maximal reducer (500) is the sameas the inferior reducer (254); in this application the complex iterationexpression is used as input, instead of the inferior expression, asdescribed in the prior patent application.

Metacomplex extreme absolute converters (260): See prior patentapplication. This component is a library of routines to support theinferior reducer (254); that is, in this case, the maximal reducer(500).

Winding adjustment iterator (502): The winding adjustment iterator (502)counts the number of iterations obtained by starting with the windingadjustment escape (see inputs, above) and iterating the real adjustmentexpression. The incremental counting stops just before iteration exceedsthe precision escape distance. The result of this process is the windingdigit adjustment.

Operation:

First the complex iteration expression is passed to the maximal reducer(500) to create the real adjustment expression. Then, the windingadjustment iterator (502) is called to count the number of steps toproduce the winding digit adjustment while using the real adjustmentexpression for each iteration of the variable.

FIG. 21: Full Modulo Embodiment

FIG. 21 shows the components for a Full Modulo Embodiment which is usedfor self-winding during iteration to produce a modulo point. Most ofthese components were described in the prior patent application. In thatpatent application, winding of the self-winding dominant stepper (225)was initiated from an enclosing interval, called a WEII. Please refer tothe prior patent application, FIG. 8, concerning the self windingiteration resolver (232). Here, instead of a WEII donating a winding andan interval center, the winding count is initialized to zero to beginthe self winding iteration. Otherwise, the description of FIG. 21 issimilar to FIG. 8, with the addition of the modulo banding embodiment(522) at the bottom of FIG. 21 and the replacement of the self windingiteration resolver (232) by the full modulo resolver (530).

The full modulo embodiment of FIG. 21 accumulates a winding count duringiteration, based on the input of the point iterate data and pointiterate goal, described in the previous patent application. The outputis called a modulo point, which includes the final iteration point andthe winding count. For very large iterations, for example 1000 steps,the resulting winding count might need an integer capable of holding 21000 winding counts, or generally p 1000. And, this may indeed be usefulfor any iteration that produces the correct, or almost correct, fullwinding count. However, as described above, in “ENUMERATEDDECOMPOSITION: FIG. 18”, only a small number of digits of the windingcount are usually used for a modulo point. In particular, when thewinding count adjustment is four for a binary decomposition, then onlyfour (binary) digits are required.

Inputs:

Point Iterate Data: this is discussed in the prior patent, but is simplya specification of the known iteration data, such as the starting domainpoint.

Point Iterate Goal: this is discussed in the prior patent, but is merelythe goal to determine when to stop iterating. Typically, the precisionescape distance is used.

Winding digit adjustment: this is a small integer. Refer to FIG. 20,Winding Digit Adjustment Calculator embodiment, for details on itsautomatic calculation.

Outputs:

Modulo point: this is the output point. Refer to introductory materialdescribed under FIG. 18, Enumeration of Decomposition Regions.

Components:

Modulo Banding Creator Embodiment (522)

The modulo banding creator embodiment (522) is the embodiment describedin FIG. 19.

Full Modulo Resolver (530)

A full modulo resolver (530) passes the point iterate data (currentiteration position) together with the dominant expression to the selfwinding dominant stepper (225) in order to update the winding count andpoint iterate data. An initial winding count, for the starting theiteration, is set to zero. (Note that the point iterate data may alreadyinclude some iteration steps; this is useful for the next embodiment,the Optimized Modulo Embodiment of FIG. 22). [0289] The self windingdominant stepper (225) is called for each evaluation of the dominantexpression of the iteration to apply winding operators.

The second part of each iteration step, processing the inferiorexpression, is done in two parts—just as in the self winding iterationresolver (232). First a principle value (i.e. no winding count) iscalculated for the inferior expression; this principle value is added tothe principle part of the current result of the dominant expression, andthe branchcut adjuster (220) is called to determine if the this finalvalue is passed forward or reversed across the branchcut on the negativereal axis. The final value for each iteration step is constructed bytaking the receiver point and assigning it the winding count of thedonor point plus the adjustment. This newly constructed point is theinput for the next step of the iteration process.

Iteration stops when the point iterate goal is met, such as achievingthe precision escape distance. The result is a winding point which meetsthe point iterate goal.

Operation:

The full modulo resolver (530) first accepts the dominant and inferiorexpressions from the complex dominant splitter (251). The full moduloresolver 530) performs a self winding iteration to produce a windingpoint. This winding point is used to construct the last iterate data aspart of the modulo banding parameters. The other two parameters for themodulo banding parameters are the continuum potential commonalityfunction and the field line commonality function; both are usuallypredetermined when an iteration expression is designated.

The last step is to pass the modulo banding parameters to the modulobanding creator embodiment (522) in order to create the modulo point.This last output, the modulo point, is returned as the output of thisembodiment of FIG. 21.

FIG. 22: Optimized Modulo Embodiment:

FIG. 22 shows the components for a Optimized Modulo Embodiment which isused for self-winding during iteration to produce a modulo point. Inboth the prior patent, and now here, it is sometimes useful to usetraditional iteration technology for part of the iteration, and thenswitch to an iteration technology incorporating self-winding.

Inputs:

Point Iterate Data: this is discussed in the prior patent, but is simplya specification of the known iteration data, such as the starting domainpoint.

Point Iterate Goal: this is discussed in the prior patent, but is merelythe goal to determine when to stop iterating. Typically, the precisionescape distance is used.

Winding digit adjustment: this is a small integer. Refer to FIG. 20,Winding Digit Adjustment Calculator embodiment, for details on itsautomatic calculation.

Outputs:

Modulo point: this is the output point. Refer to introductory materialdescribed under FIG. 18, Enumeration of Decomposition Regions.

Components:

Traditional iterator (540): A traditional iterator (540) iterates aniteration point based on the complex iteration expression until theescape distance is achieved. That is, it uses standard arithmetic tofind the next iterate without concern for winding. The traditionalresult is the next point iterate. [0304] Full modulo embodiment (532): Afull modulo embodiment (532) was described in the previous section forFIG. 21.

Optimized modulo resolver (542): An optimized modulo method (542) usesits parameters to specify a domain start point for iteration and anescape distance to terminate iteration. These two data objects arepassed to a traditional iterator (540) which performs a traditionaliteration until the escape distance is achieved. The tradition result isreturned to this component.

Typically the escape distance which is passed to the traditionaliterator (540), is the global escape distance (see prior patent), butcould also be the precision escape distance. The global escape distanceis small enough that enough steps, i.e. at “winding digit adjustment”steps, remain to be iterated.

With this new iterate point value, two parameters are constructed forthe full modulo embodiment (532). The modified point iterate data isconstructed from the original point iterate data and uses the iteratefrom the previous action as the starting point. The original pointiterate goal is used to construct the winding point iterate goal. Thewinding point iterate goal is typically the precision escape distance.Finally the full modulo embodiment (532) is called to perform the selfwinding of the last few steps.

In summary, this optimization uses self winding on the last fewiterations, and not on the thousands of iterations before achieving theescape distance.

Operation:

The optimized modulo resolver (542) accepts the input parameters andbegins the process by iterating using the traditional iterator (540).Upon completion, the full modulo iterator embodiment (532) is calledupon to complete the iteration and eject the modulo point.

FIG. 23-FIG. 24: Codomain Point Resolver Embodiment

FIG. 23 shows the codomain point resolver embodiment. This embodimentshows how to resolve a modulo point by donating the winding count from adonor codomain point. This can be described as a process to disambiguatethe decomposition region of the modulo point so that the correct fieldband integer can be assigned.

On the top left side of the FIG. 23, two inputs are shown: a modulopoint and a donor codomain point. On the top of the FIG. 23, three partsof the modulo point are passed directly to the final result, thereceiver codomain point. The first of these three parts is the modulopotential band. This consists of a potential band fraction and potentialband integer. Although this potential band does not take part in thealgorithm, it should be noted that this potential band intrinsicallyspecifies the iteration count, which is used. The second value, themodulo iteration count, is also passed to the output, but it is alsoused in the algorithm. The third value is also passed unchanged to theresult, but is used in the algorithm.

The result of processing by this embodiment is the creation of areceiver codomain point, which is identical to the modulo point used asinput with the addition of a correct field band integer.

Inputs:

Donor Codomain Point: a previously computed codomain point which isfully resolved in that it has an accurate field band integer.

Modulo Point: a modulo point which needs the correct field band integerin order to become a codomain point.

Outputs:

Receiver Codomain Point: this is the input modulo point converted to anoutput point with a correctly computed field band integer.

Components:

Codomain same level resolver (550): the codomain same level resolver(550) is used when the two points (modulo point and donor codomainpoint) iterate to the precision escape distance in the same number ofcounts. The assumption is that they are so close together that they arein the same or adjacent decomposition regions. Actually, they need to becloser than that; their field band (integer+fraction) should not differby more than 0.5. The result of processing is a winding count thatdiffers by no more than 1 from the donor field band integer extractedfrom the donor codomain point. The resulting winding count is donated tothe result, called the receiver codomain point. The following simple C++code uses simple language features, and should be readable byprogrammers familiar with modern programming languages. The “double”type stores floating point numbers and the Winding number is a type usedto store winding counts, which are integers.

  static void CodomainSameLevelResolver(  double donorFieldFraction,WindingNumber &donorWinding,  double receiverFieldFraction,WindingNumber &receiverWinding)// return value {  doublefractionalDifference=   (donorFieldFraction-receiverFieldFraction);  if(fractionalDifference==0.0)   receiverWinding=donorWinding;  else  if(fractionalDifference>0.0)  {   // the donorKP APPEARS // greater thanthe receiver   if (fractionalDifference<.5) {    // indeed, the donor isslightly larger    receiverWinding=donorWinding; // “A”   } else {    //because the difference is great, donor    // is best described as lower.   receiverWinding=donorWinding+1; // “B”   }  }  else  {   // Otherwisethe donor // APPEARS less than receiver.   if((-fractionalDifference)<.5)   {    // donor is slightly smaller, butsame region    receiverWinding=donorWinding; “C”   }   else   {    //the difference is great, // therefore the receiver    // is bestdescribed as lower.    receiverWinding=donorWinding-1; “D”   }  }};

Notice that after each assignment of the receiverWinding, there is acomment to indicate “A”, “B”, “C” or “D”. These letters correlate to thecases in FIG. 23A, FIG. 23B, FIG. 23C, and FIG. 23D. Associated witheach label, there is a 0, +1 or −1 to indicate the relationship of thereceiver winding count, as compared to the donor's winding count. Eachof these figures indicates three adjacent decomposition regions havingthe same iteration count. From left-to-right, each rectangle has oneless winding. The “D” value indicates the location of the donor. The “R”value appears in each of the three rectangles and represents the samepoint, but until processing occurs, we just don't know which are is thereal R and which of the R's are phantoms. The “R” value with a squareindicates that it is the true “R” value, and the other “R” values arenot correct. The true R value is the one closest to the donor.

Codomain up level resolver (552): The codomain up level resolver (552)is used when the modulo point's iteration count is one greater than thatof the donor's iteration count. To properly correlate the field bandfrom the donor to the receiver's field band, the donor's field band mustreflect the higher iteration count. First combine the field band integerthe fraction to form a single number, then multiple by “p”, where “p” isthe exponent power of the highest term of the dominant expression, thenseparate the new integer and fractional parts. In the case of theMandelbrot and Julia sets, the value of p is, of course, 2. These newdonor values are then passed to the same codomain same level resolver(550), described above. For example, here is the code for the case whenp=2.

  newDonorFieldFraction =  donorFieldFraction*2.0; bool addOne= newDonorFieldFraction>=1.0; newDonorWinding=donorWinding<<1; if(addOne) {   newDonorWinding++;   newDonorFieldFraction-=1.0; }CodomainSameLevelResolve(   newDonorFieldFraction, newDonorWinding,  receiverFieldFraction, receiverWinding);

The above code uses shifting of integer bits in order to multiply by 2;for other values of p, this trick may not be available, and an actualmultiply might be necessary. The above method is used when the dominantexpression is z p, for other types dominant expressions the donorwinding is delivered so that there is a continuity of all values as thetransition across different escape iteration counts are encountered.

Codomain down level resolver (554): the codomain down level resolver(554) is used when the modulo point's iteration count is one less thanthat of the donor's iteration count. To properly correlate the fieldband from the donor to the receiver's field band, the donor's field bandmust reflect the lower iteration count of the receiver. First combinethe donor field band integer and the donor fraction to form a singlenumber (if not yet done), then divide by “p”, where “p” is the exponentpower of the highest term of the dominant expression, then separate thenew integer and fractional parts. In the case of the Mandelbrot andJulia sets, the value of p is, of course, 2, and arithmetic shifting canbe used. These new donor values are then passed to the same codomainsame level resolver (550), described above.

  newDonorFieldFraction = donorFieldFraction*.5; bool addOne=donorWinding&1; newDonorWinding= donorWinding>>1; if (addOne) newDonorFieldFraction+=.5; CodomainSameLevelResolver( newDonorFieldFraction, newDonorWinding,  receiverFieldFraction,receiverWinding);

The above code uses shifting of integer bits in order to divide by 2;for other values of p, this type of trick may not be available, and anactual divide might be necessary.

The above method is used when the dominant expression is z p, othertypes of dominant expressions will require that the donor winding isdelivered so that there is a continuity of all values as the transitionacross different escape iteration counts are encountered.

Codomain resolve chooser (556): the codomain resolve chooser comparesthe iteration counts of the modulo point and the donor codomain point.Based on the comparison, another component is chosen. Parameters areprepared for this selected component using the data from the two inputpoints, and the selected component is called. The comparison choice forprocessing is given by:

If the modulo iteration count equals the donor iteration count, then thecodomain same level resolver (550) is called.

If the modulo iteration count is greater than the donor iteration count,then the codomain up level resolver (552) is called.

If the modulo iteration count is less than the donor iteration count,then the codomain down level resolver (554) is called.

Operations:

In FIG. 23, the action is simple. The receiver codomain point is loadedwith all point values except for the receiver field band integer. Thecodomain resolve chooser (556) uses the iteration counts of the twoinput points to choose which of the three components to call; theparameters are made ready and the call is made, and the resulting fieldband integer is stored into the receiver codomain point.

The receiver codomain point can simply be the original modulo point, andthen the embodiment merely loads the created field band integer into theoriginal modulo point; in such a case there is no need to copy the otherfields of the modulo point into the receiver codomain point because theyare one and the same.

FIG. 25: Traditional Self Resolver Embodiment (Prior Art)

FIG. 25: The Traditional Self Resolver produces modulo points directlyfrom domain points in a traditional manner without self-winding or awinding digit adjustment. This is prior art, see introductory materialon prior art for this patent application.

Inputs:

Domain start point: this is a domain point to begin iteration.

Escape Distance: a distance to achieve to signal the end of theiteration—see bail out in the prior art discussion in the introductorymaterial.

Outputs:

Codomain or Modulo Point: this is the resulting point, which can beinterpreted as a codomain or modulo point depending upon the startingpoint. Note that if the escape distance is very small, then there willbe discontinuities across boundaries of differing escape iterationcounts.

Components:

Traditional Iterator (540)

A traditional iterator (540) iterates an iteration point based on theoriginal complex iteration expression. This individual component isprior art.

Traditional Banding (562)

Banding consists of two parts: potential banding and field banding. Thiscomponent, traditional banding (562), is a watered-down version of FIG.19, Modulo Banding Embodiment. Because there is no self-winding, thereis also no winding digit adjustment.

For the field band fraction, the argument angle of the last iterate(−Pi, PI] is converted into a fraction by dividing by 2*Pi, and 0.5 isthen added to produce a fraction between 0 and 1. In this form, there isno way to calculate a field band integer, and it is undefined.

For the potential band integer, the escape iteration count is utilized.For the potential band fraction, any method measuring the distance bywhich a point exceeds the escape distance, can be used to assign afractional, but the use of a real logarithm base p, is simple and clean,and as seen in FIG. 18.

Note that I have not seen prior art which uses the real logarithm base pto create smooth continuity across each specific potential band.

Thus, this embodiment, works similarly to the Full Modulo IteratorEmbodiment of FIG. 21 or the Optimized Modulo Iterator Embodiment ofFIG. 22, but its implementation and operation just by happenstance ispresent in the prior art.

Note: This components creates a potential banding and field banding fora domain point beyond the global escape distance. However, an escapedistance very much larger than the global escape distance is requiredfor the appearance of continuity across potential bands (as is true forany method). However, because there is no self winding or winding digitadjustment, a higher escape distance implies smaller decompositionregions.

But how can starting from domain points produce correct field bandintegers (winding counts) when there is no self winding? The answer isthat decomposition regions for points which require zero iteration willalso have a zero winding count.

For other domain points below the escape distance, where at least oneiteration is required, the result can serve as a modulo point.

FIG. 26: Self Codomain Resolver Embodiment

FIG. 26: The Self Codomain Resolver produces codomain points directlyfrom domain points and incorporates a winding digit adjustment which maybe non-zero.

Inputs:

Point Iterate Data: this is discussed in the prior patent, but is simplya specification of the known iteration data, such as the starting domainpoint.

Point Iterate Goal: this is discussed in the prior patent, but is merelythe goal to determine when to stop iterating. Typically, the precisionescape distance is used.

Winding digit adjustment: this is a small integer. Refer to FIG. 20,Winding Digit Adjustment Calculator embodiment, for details on itsautomatic calculation.

Outputs:

Codomain point: this is the output point. Refer to introductory materialdescribed under FIG. 18, Enumeration of Decomposition Regions.

Components:

Extended Modulo Embodiment (534)

This component is the full embodiment of FIG. 21, Full ModuloEmbodiment, but with the proviso that all digits of the winding countare preserved during the self winding process.

Winding Digit Limiter (560) [Optional]

This component strips high order digits base “p” from the field bandinteger. All digits beyond the count specified by the winding digitadjustment are removed. However, in practice, there is only one way tohave extra digits, and that is through negative winding counts which arereally a simple sign extension. The winding digit limiter (560) is ofmore use when some of the winding count digits are donated; this usageis described later.

Note:

Warning, the output codomain point is appears to almost certainlycontain errors for some points in the Mandelbrot and some types of Juliasets, perhaps all. Therefore, it should only be used when it is known tobe safe; for example, any domain point beyond the global escape distanceis considered safe.

Operation:

The two components are called in sequence, as shown in the diagram ofFIG. 26.

FIG. 27: Traditional Decomposition Interval Embodiment

FIG. 27: The Traditional Decomposition Interval Embodiment usestraditional derivatives to set the size of a decomposition intervalsurrounding an iterated point. Self winding and winding digitadjustments are not available for this degenerate form.

Inputs:

Point Iterate Data: this is discussed in the prior patent, but is simplya specification of the known iteration data, such as the starting domainpoint.

Point Iterate Goal: this is discussed in the prior patent, but is merelythe goal to determine when to stop iterating. Typically, the precisionescape distance is used.

Decomposition Sizing Expressions: Refer to decomposition intervalquantifier (574), below.

Outputs:

Decomposition quantified interval: this interval is proportioned to thepoints surrounding decomposition region so that later processing candisambiguate (resolve) the correct field band integer. The intervaltypically includes the domain point, the domain size, and the modulopoint and size in the codomain. The iteration point need not be at thecenter of the resulting interval, because the safe distance will bedifferent in each direction.

Components:

Traditional Derivative Iterator (572)

This component iterates a point in the same fashion as performed in thetraditional iterator (404), which was described in the OPTIMIZED MODULOEMBODIMENT of FIG. 22. This component also finds the partial derivativeswhile iterating the point. Standard partial derivatives are calculatednumerically using the chain rule and other numerical derivativecalculations. As seen in FIG. 27, the component takes the starting pointas specified by point iterate data, and typically iterates until theprecision escape distance is achieved, according to the point iterategoal parameter. The result is the partial derivatives, including the0'th derivatives (the function values themselves) of both the real andimaginary functions of the complex variable. Because it is an analyticfunction, the simplification afforded by the Cauchy-Schwarz equationsfor partial derivatives for analytic functions can save time in thiscomputation.

Decomposition Interval Quantifier (574)

A decomposition interval quantifier (574) takes the iterate derivativesfrom the traditional derivative iterator (572) and substitutes them toanother parameter, the decomposition sizing expression, in order toestimate the size of a decomposition interval.

The decomposition sizing expression is constructed to estimate a sizefor a portion of a decomposition region. For example, suppose we wish toknow in domain coordinates how far we can extend in both axes (real andimaginary) such that the potential band fraction change is limited toplus or minus 0.5, and the field band fraction is limited to plus orminus 0.2. The Taylor or Maclaurin Series of expansion of the functionis constructed for the field band fraction and/or the potential bandfunction. These expressions can be equated to any real value, such as0.5 or −0.5. The problem is that this polynomial equation is given interms of two variables, a real axis unknown, say x, and an imaginaryvalue, say y. However, these dual variable equations can be easilychanged to a single variable using the first derivatives. For example,suppose the first derivatives for the field band are given by dx=a anddy=b, where a and b are numeric constants. These derivatives specify adirection of most rapid increase n the field band in terms of a linearequation in x or y. To solve for x, we can replace the “y” value usingy=x*(b/a). And similarly for solving in y, we derive an x substitution.Once the substitutions are made, we can solve for one variable, andderive the other variable from the linear equation.

A good estimate can be made for distances which cause a specific changein the potential band or field band fractions. For more precision, use2.sup.nd order partial derivatives in addition to the first order.

Considerations for the Potential Band:

The decomposition sizing expression can utilize the original potentialequations (see prior patent application), or the more intuitivecontinuum expressions discussed in FIG. 19 Modulo Banding Embodiment.Here, in this embodiment, we are concerned with the traditionalderivatives.

Note:

Setting decomposition sizing parameters should follow these rules.

Keep the maximum change for the potential banding to about 0.5 so thatany point in the resulting interval will never differ by more than 1from the iterated point's potential band.

Keep the maximum change for the field banding to about 0.2 so that anypoint in the resulting interval will never differ by more than 0.5 fromthe iterated point's field band, even if its at a lower or higheriteration count.

Operation:

The two components are called in sequence, as shown in the diagram ofFIG. 27.

FIG. 28: Modulo Decomposition Interval Embodiment

FIG. 28: The Modulo Decomposition Interval Embodiment uses traditionalderivatives together with self winding to set the size of adecomposition interval surrounding an iterated point. It is similar toFIG. 27: the Traditional Decomposition Interval Embodiment.

This module is an enhancement of FIG. 27 Traditional DecompositionInterval Embodiment. Although several additional components are used,the final result is the same type of data, but likely representing alarger decomposition quantified interval in the domain.

Inputs:

Point Iterate Data: this is discussed in the prior patent, but is simplya specification of the known iteration data, such as the starting domainpoint.

Point Iterate Goal: this is discussed in the prior patent, but is merelythe goal to determine when to stop iterating. Typically, the precisionescape distance is used.

Winding Digit Adjustment: this is a small integer. Refer to FIG. 20,Winding Digit Adjustment Calculator Embodiment for automaticcalculation.

Modulo Decomposition Sizing Expression: this is similar to thetraditional decomposition sizing expression discussed under FIG. 27,Traditional Decomposition Interval Embodiment. However, in this case,the expression takes into consideration the winding digit adjustment.Note that the winding digit adjustment divides the field band by 2 p,where p is the power exponent of the dominant expression. This affectsall the partial derivatives.

Outputs:

Decomposition quantified interval: this interval is proportioned to thepoints surrounding decomposition region so that later processing candisambiguate (resolve) the correct field band integer. The intervaltypically includes the domain point, the domain size, and the modulopoint and size within the codomain.

Components:

Traditional Derivative Iterator (572)

This method refers to the traditional iteration method of calculatingderivatives. See FIG. 27, Traditional Decomposition Interval Embodiment.

Decomposition Interval Quantifier (574)

This method was described in FIG. 27, Traditional Decomposition IntervalEmbodiment. Note here that the modulo decomposition sizing expressioncompensates for the effects of the winding digit adjustment byincorporating the effect of multiplying the field line derivatives bythe effect of multiplication by p wda (where wda is the winding digitadjustment, and “p” is the largest integer exponent of the dominateexpression).

Modulo Resolver Method (588)

The modulo resolver method replicates either the FIG. 21 Full ModuloEmbodiment or FIG. 22, the Optimized Modulo Embodiment.

Modulo Decomposition Modifier (590)

The modulo decomposition modifier (590) takes two parameters: a modulopoint and a decomposition quantified interval which was iterated fromthe same starting point in the domain. The output of the modulo resolvermethod (590) includes a field band fraction value to replace the fieldband fraction of the decomposition quantified interval. This new fieldband fraction is reflected in the resulting decomposition quantifiedinterval which is returned.

Processing:

Processing can proceed as shown in the diagram of FIG. 28. This methodworks with any winding digit adjustment, including zero. When thewinding digit adjustment is zero, then this method produces the sameresult as FIG. 27 Traditional Decomposition Interval Embodiment.

The question can be asked, if both the output of the decompositioninterval quantifier (574) and the modulo decomposition modifier (590) isa decomposition quantified interval, then what is the difference? Ofcourse, the field band integer is usually undefined (although it couldbe loaded with whatever the modulo point has for a field band integer),it's the field band fraction which is different. The final intervalincludes the winding count digits which are shifted into the fractiondue to the winding digit adjustment.

FIG. 29: Codomain Interval Embodiment

FIG. 29: The Codomain Interval Resolver Embodiment creates a codomaindecomposition interval from a decomposition quantified interval and acodomain point.

Inputs:

A decomposition quantified interval: is a decomposition intervalrepresenting a small enough portion of a decomposition region thatresolving is possible.

Donor Codomain Point: this is the input point which will donate a fieldband integer in order to resolve the decomposition quantified interval.

Outputs:

A codomain decomposition interval is produced which is a decompositionquantified interval supplemented with a correct field band integer forthe iterated point used to create the interval.

Components:

Codomain Point Resolver Embodiment (558)

On the right side of FIG. 29, the component called codomain pointresolver embodiment (558) represents the complete embodiment of FIG. 23,Codomain Point Resolver Embodiment.

Codomain Decomposition Constructor (580)

A codomain decomposition constructor (580) converts a decompositionquantified interval into a codomain decomposition interval. A codomaindecomposition interval includes complete field band, both integer andfraction, whereas the decomposition quantified interval is missing thefield band integer.

A codomain decomposition constructor (580) accepts two inputs, adecomposition quantified interval, and a donor codomain point.

Next, parameters are constructed for calling the codomain point resolverembodiment (558). The donor codomain point is directly passed, in FIG.29, as the input codomain point. The modulo point is taken from thedecomposition quantified interval.

In FIG. 29, the codomain point resolver method (558) computes an outputcodomain point. The output codomain point includes a field band integerwhich is applied, as modified by the codomain point resolver embodiment(580), to the decomposition quantified interval to produce the codomaindecomposition interval.

Processing:

The codomain decomposition constructor (580) takes parameters andprepares parameters and calls the codomain point resolver embodiment(558) to produce an output codomain point which is used to construct thecodomain decomposition interval, the result of this embodiment.

Note:

The output can use the same data structure as the input called thedecomposition quantified interval, provided there is a record to containthe field band integer.

Note: in order to donate a field band integer, the donor codomain pointmust be relatively close (a fraction of the decomposition region in alldirections) to produce the correct result; this closeness must besufficient to disambiguate the correct integer adjustment to choose thecorrect field band integer. See the “Note” for FIG. 27: TRADITIONALDECOMPOSITION INTERVAL EMBODIMENT, above, for relative constants.

FIG. 30: Modulo Codomain Interval Constructor Embodiment

FIG. 30 shows the Codomain Interval Constructor Embodiment whichconstructs a codomain decomposition interval from a donor codomain pointand a nearby domain point. Note that the bottom half of diagramrepresents the embodiment of FIG. 29, Codomain Interval ResolverEmbodiment.

Components:

Codomain Point Resolver Embodiment (558)

See FIG. 29, the Codomain Interval Resolver Embodiment, which uses thesame component.

Codomain Decomposition Constructor (580)

See FIG. 29, the Codomain Interval Resolver Embodiment, which uses thesame component.

Decomposition Interval Method (592)

The decomposition interval method (592) is either the entire embodimentof FIG. 27, the Traditional Decomposition Interval Embodiment, or FIG.28 Modulo Decomposition Interval Embodiment.

Processing:

The output of the decomposition interval method (592) is a decompositionquantified interval. This result is passed to the codomain decompositionconstructor (580). For the processing of the bottom of the diagram,refer to FIG. 29, Codomain Interval Resolver Embodiment.

FIG. 31, FIG. 32:

Codomain Chain Embodiment:

FIG. 31 shows the Codomain Chain Embodiment, a method for creating achain of overlapping (or touching) codomain intervals to cover a path orarea.

Input: target chain input: the input is composed of two parts.

Target Area:

The target area may be an area defined by a simple path in the domain orcodomain or may a area of interest.

Initial Codomain Interval:

The initial codomain interval specifies the start of the chainingprocess. The initial codomain interval could also be a zero radiusinterval as defined by a single codomain point.

Output:

Next Codomain Interval:

During processing, a series of codomain intervals are ejected; eachinterval touching or overlapping one of the previously ejectedintervals.

Components:

Codomain Interval Constructor Embodiment (596)

This component creates a codomain interval using the embodiment ofCodomain Interval Constructor Embodiment of FIG. 30.

Codomain Chain Maker (598)

Beginning with the initial codomain interval, the codomain chain makercreates a series of codomain intervals. To create a new interval,parameters are prepared. The center of a previously created interval (orthe initial codomain interval) is used as a donor codomain point. A newcenter point in the domain is proposed and the point iterate data andthe point iterate goal parameters are prepared for the codomain intervalconstructor embodiment (596). The codomain interval method (596) iscalled, and the new codomain interval is created. If the new codomaininterval is acceptable, then it is ejected as part of the sequence, andis called the next codomain interval.

FIG. 32A to FIG. 32E are used to illustrate two strategies which can beemployed in the codomain chain maker (598).

FIG. 32A illustrates a periphery chain strategy. From the initialcodomain interval a point on the periphery of the interval, a intervalperiphery point, is chosen that meets the criteria of the target areaparameter. Using the codomain interval constructor embodiment (596), anew codomain interval is generated which will always overlap theprevious interval because its center point also overlaps. This approachis very effective and is particularly useful when following a pathway ornavigating along potentials and field lines.

FIG. 32B to FIG. 32E show partial results when using a strategy calledthe interval leaping strategy, to minimize the number of generatedintervals. This is particularly useful when covering a large area thatcould generate a million intervals. Here, some of the generatedintervals will be rejected, but the overall number of intervals whichare utilized is reduced. This strategy is typically used with a binarysubdivision of the complex coordinate system. That is, each spatial areais subdivided into 4 quadrants. In such a case, each interval is chosento be centered in the middle of a subdivision, and when the size of thedecomposition interval is calculated, it might not touch an adjacentcodomain interval. In such a case, more subdivision is required so thatone of the subdivided quadrants is closer to a fully resolved quadrant.For example, if the intervals are centered on the real axis at 2 and2.1, and each interval has a equivalent radius of 0.55, then they areokay, because they overlap.

One can even imagine a hybrid system (not illustrated), where aperiphery point, in common between the known codomain interval and theproposed interval, is used to create a temporary interval, as done in aperiphery chain strategy. This temporary interval provides a bridge toeliminate ambiguity of the decomposition intervals.

Paths Used as the Target Area:

A series of codomain decomposition intervals is created by following apredetermined path in the domain or using directional derivatives tomove in a specified direction.

Open Areas used as the Target Area: for areas, new codomain intervals,inside the target area and touching the target area, are constructednext to any previous codomain interval. Intuitively, think of a forestedarea bounded by rivers (defining a target) and after a lighting strikecreates a fire; the fire expands within the confines of the rivers andproceeds outward from the edge of the fire until the entire area isblackened (turned into codomain intervals).

Processing:

The codomain chain maker (598) is called, and it makes repeated callsupon the codomain interval method to meet the goal covering the targetarea with intervals.

FIG. 33: Anchored Chain Embodiment

FIG. 33 shows the Generic Anchored Chain Embodiment is a generic methodfor finding an anchored codomain point and building an interlockingchain. The interval processing technology relates to both this patentapplication and the prior patent application.

This generic embodiment represents two embodiments from the priorpatent, FIG. 7 and FIG. 17.

Input: anchored target input: the input is composed of two parts.

Target Area:

The target area may be an area defined by a simple path in the domain orcodomain.

Domain Point:

Specifying a domain point lying that meets criteria for correctself-winding.

Output:

Resolved Interval:

During processing, a series of resolved intervals are ejected; eachinterval touching or overlapping one of the previously ejectedintervals. If the processing utilizes the technology from this patent,then the resolved interval is a codomain interval; for the prior patent,the resolved interval is a WEII. Whatever technology is chosen, the twocomponents described below must use a compatible technology!

Components:

Generic Self Codomain Resolver Method (604)

This method takes a domain point, and without reference to other pointsor intervals, generates a codomain point, as in one of the following:see FIG. 25, Traditional Self Resolver Embodiment (Prior Art); or, seeFIG. 26, Self Codomain Resolver Embodiment. Also, from the previouspatent, see the component called the anchor resolver (226) of priorpatent under FIG. 7, SAME LEVEL WINDING INTERVAL EMBODIMENT. These arethree separate technologies: by choosing one, the following genericcomponent must use a corresponding technology.

Generic Resolving Chain Embodiment (606)

The component is the entire embodiment of FIG. 31, Codomain ChainEmbodiment. Note that this same Codomain Chain Embodiment can use one oftwo technologies: traditional codomain processing, or with winding digitadjustment technology. For details on these two codomain technologiessee codomain interval method (596) of FIG. 31, Codomain ChainEmbodiment.

When using the technology from the prior patent, then this componentcould be a representation of FIG. 17, an embodiment called the WindingChain Embodiment.

Thus there are three possible technologies, just as in the generic selfcodomain resolver method (604). The technology chosen for this componentmust match the previous.

Processing:

This embodiment takes a starting point, and a domain point, anddetermines its codomain value, and then proceeds to build a chain ofinterlocking intervals. Once the process is started using an anchor,additional intervals can be added at any time to the chain.

FIG. 34: Periphery Pathfinder Embodiment

FIG. 34 shows a Periphery Pathfinder Embodiment finds a path to theoutside using periphery points of successive domain intervals.

Input:

Start domain point: this starting point, within the domain, for findinga way out.

Output:

Domain Path:

The domain path consists of chain of domain intervals together with thecandidate domain points, as needed.

Components:

Anchor Check (612)

This component, the anchor check (612) checks a domain point todetermine if the point is an anchor point. Any point beyond the globalescape distance can be used as an anchor, refer to the prior patent fordetails on calculating the global escape distance.

Decomposition Interval Method (610)

The component determines a domain interval surrounding an unanchoreddomain point. The term unanchored is used to indicate that the point hasfailed the anchor test. The generated domain interval should represent asignificant fraction of a decomposition region—not too much, and not toolittle. For example, values in the range of 0.1 to 0.5. However, themost critical aspect of determining an interval is that the intervalshould not overlap the boundary of the domain.

Two previous embodiments can be used: see FIG. 27, TraditionalDecomposition Interval Embodiment, or see FIG. 29, Modulo DecompositionInterval Embodiment.

Periphery Point Finder (614)

This method uses directional derivatives of the traditional potentialfunction for the iterated point used in a decomposition interval todetermine a point on the periphery of the decomposition interval whichis in the direction of an escape path within the domain,

Domain Path Collector (616)

The component collects the generated domain intervals so that uponcompletion a domain path is created. The component also saves the anchordomain point which terminates the list.

Operation:

A simple program loop is created. Before each iteration a check is madeby the anchor check (612) to see if the domain path has escaped to theglobal escape distance, if so, all prior results, if any, are returned.Otherwise, an interval is first generated by the decomposition intervalmethod (610) and saved using the domain path collector (616). Aperiphery point on the interval is found by the periphery point finder(614), and is called the candidate domain point. This point is thenpassed to the anchor check (614) and the process is repeated when theanchor check (612) fails; if the anchor check (612) succeeds, then thecandidate domain point becomes the anchor domain point and is added tothe domain path using the domain path collector (616).

Alternatives:

This pathfinder could easily be altered to move deeper or closer to theboundary rather than away from the boundary. Or, it could be designed tomove in any direction. However, navigation is best performed usingcodomain intervals, such as by incorporating directional derivativesinto the codomain chain maker (598) in covering the target area usingthe codomain chain embodiment of FIG. 31.

FIG. 35: Jumper Pathfinder Embodiment

FIG. 35 shows a Jumper Pathfinder Embodiment, which beginning with anydomain point, no matter how deep inside a chaotic function, finds a pathto the outside using periphery points of successive domain intervals.

If one does not have a decomposition interval method (610) as used inFIG. 34 of the Periphery Pathfinder Embodiment, then there may bedifficulty finding the right interval size within orders of magnitude.In such cases, an interval size can be chosen, and then the intervalsize can be changed until one is found that is a reasonable size. Thisprocess can be much slower than that of the Periphery PathfinderEmbodiment, where the correct interval size is quickly chosen, becausein this embodiment, multiple iterations may be required. However, thisembodiment has the advantage that it works with the prior patentapplication's technology, which doesn't automatically generate thecorrect interval size.

Input:

Start domain point: this starting point for finding a way out.

Output:

Domain Path:

The domain path consists of chain of domain intervals together with thecandidate domain points, as needed.

Components:

Anchor check (612) See FIG. 34, Periphery Pathfinder Embodiment.

Traditional Derivative Iterator (572)

This method refers to the traditional iteration method of calculatingderivatives. See FIG. 27, Traditional Decomposition Interval Embodiment.

Periphery point finder (614): See FIG. 34, Periphery PathfinderEmbodiment.

Domain path collector (616): See FIG. 34, Periphery PathfinderEmbodiment.

Cell Categorizer Embodiment (620)

This component is used to verify that a specific domain interval is freeof any boundary points by formally using complex interval analysisduring iteration. Refer to the prior patent, the embodiment of FIG. 6.

Directional Interval Initializer (622)

This component takes an domain point and its potential derivatives andfirst determines a direction for the next interval. The directionalinterval initializer (472) attempts to construct a large domain intervalwhich encloses the domain point and the path in the direction of thestep direction. One method is to simply return a very large intervalwithout any concern as to whether it contains or doesn't containboundary points (that is, no concern about the validity of the domainpoints). However, if the component can quickly put some type ofreasonable limit on the size, then some computation can be avoided. Forexample, the approximate distance to the nearest boundary point can bemade as the absolute value of the traditional potential divided theabsolute value of its derivative. This could be used as the radius forthe returned interval. Another method could be to use the technology ofthe decomposition interval embodiment in FIG. 25 to gauge the size of aninterval in the specified direction, but in that case, it probably wouldbe better to use the Periphery Pathfinder Embodiment of FIG. 34.

Safe Interval Looper (624)

This component takes a domain interval, called the candidate interval,and tries to validate it using the cell categorizer embodiment (620). Ifsuccessful, the domain interval is generated. Otherwise, the size of thedomain interval is considered to be too large. A new candidate intervalis generated and the process is repeated until the candidate intervalpasses the testing of the cell categorizer embodiment (620).

Processing:

This embodiment performs the function as the Periphery PathfinderEmbodiment of FIG. 34. However, in this case, extra processing isrequired to find an interval of appropriate size.

FIG. 36: Path Resolver Embodiment

FIG. 36 shows the Path Resolver Embodiment, a method for finding a chainof domain intervals to resolve an arbitrary domain point.

Input:

Start domain point: this starting point for finding a way out.

Output:

Next Resolved Interval:

A series of resolved intervals are ejected one-by-one to obtain a chainof resolved intervals from the start domain point through to the anchorpoint.

Invalid Domain Point:

When the Start domain point does not iterate to a precision escapedistance, then it is considered as an invalid domain point, and theprocess stops without generating a path.

Components:

Escape Pathfinder Method (630)

This component finds a domain path from the start domain point. Typicalembodiments include: the periphery pathfinder embodiment of FIG. 34 orthe jumper pathfinder embodiment of FIG. 35.

Generic Anchored Chain Embodiment (608)

This component takes a path in domain space which includes an anchorpoint. The anchor point is resolved and then the entire chain of domainintervals is resolved. See generic anchored chain embodiment of FIG. 33.

Processing:

This embodiment performs two simple steps to resolve an arbitrary domainpoint. First a domain path is constructed using an escape pathfindermethod (630). Secondly, the domain path, including the final anchorpoint, is passed to the generic anchored chain embodiment (608) toobtain a series of ejected resolved intervals.

FIG. 37: Buffered Resolver Embodiment

FIG. 37 shows the Buffered Path Resolver Embodiment, a method forfinding a chain of domain intervals to resolve an arbitrary domain pointand simultaneously saving the resolved intervals.

Input:

Start domain point: this starting point for finding a way out.

Output:

Next Resolved Interval:

A series of resolved intervals are ejected one-by-one to obtain a chainof resolved intervals from the start domain point through to the anchorpoint.

Invalid Domain Point:

When the Start domain point does not iterate to a precision escapedistance, then it is considered as an invalid domain point, and theprocess stops without generating a path.

Components:

Generic Anchored Chain Embodiment (608)

This component takes a path in domain space which includes an anchorpoint. The anchor point is resolved and then the entire chain of domainintervals is resolved. See generic anchored chain embodiment of FIG. 33.

In this embodiment, this component is used similarly to that in thepreviously described embodiment, Path Resolver Embodiment. However, inthis case, direct access is also made to the generic resolving chainmethod (606), as described in the processing, below. Thus, a priorresolved point, generated by extracting a resolved point from a resolvedinterval found in the resolved interval buffer (634), is used instead ofrequiring an anchor point for resolving.

Resolved Interval Buffer (634)

This component provides storage for previously resolved intervals. Abinary subdivision is typical where each square is subdivided into fourequal squares, as needed for intervals.

Buffered Escape Pathfinder Method (632)

This component is almost the same as the previously described escapepathfinder method (630), except that it checks the resolved intervalbuffer (634) to see if the candidate domain point already belongs to aresolved domain interval. See FIG. 36, Path Resolver Embodiment, fordetails on the escape pathfinder method (630),

Processing:

In the Path Resolver Embodiment, the escape path of domain intervals isconstructed until an anchor point is found. Here, in this embodiment,this cumbersome process is terminated early whenever possible. If thestart domain point leads to a candidate domain point which is includedin a previously resolved interval, then the prior resolved point of theenclosing interval can be passed directly to the generic resolving chainmethod (606) without requiring the anchor processing of generic selfresolving method (604).

FIG. 38: Pixel Center Bitmap Iterator Embodiment

FIG. 38 shows the Pixel Center Bitmap Iterator Embodiment for ensuringthat all pixels are assigned a codomain value based on iterating thedomain point at the center of a pixel.

Input:

Bitmap Target area: specify an area of the domain with dimensions for abitmap

Output:

Resolved Point:

A series of resolved points are ejected one-by-one. A resolved pointincludes the potential banding and field banding (or its equivalent ofpotential and field lines).

Components:

Generic Point Resolver (638)

This component produces resolved points from a domain point (domainpixel center) and a resolved interval. Incorporating the functionalityof the previously described winding digit limiter (560) is optional butrecommended: see FIG. 26, Self Codomain Resolver Embodiment.

Decomposition Technology:

If using the advanced self-winding and winding digit adjustmenttechnology of this patent, then the resolved interval is a codomaindecomposition region. This requires two steps. First, a modulo point iscreated from the domain point using the component called the moduloresolver method (588), which is either the FIG. 21 Full ModuloEmbodiment, or FIG. 22 Optimized Modulo Embodiment. Then the embodimentof FIG. 23, Codomain Point Resolver Embodiment, is used to find thecodomain point.

Complex Interval Analysis of Prior Patent:

When using the complex intervals of the prior patent technology, theembodiment of FIG. 8, Self Winding Resolver Embodiment, is used to finda point with a winding count. Then the potential and field linecalculations are made using the methods of the prior patent, or the useof potential banding and field banding within this document. See FIG.19, Modulo Banding Embodiment.

Buffered Path Resolver Embodiment (636)

This component is the full embodiment of FIG. 37, the Buffered PathResolver Embodiment.

Bitmap Render Loop (640)

This component, the bitmap render loop (640), iterates through all thepixel centers of the bitmap target area and finds a resolved intervalfor each by calling the buffered path resolver embodiment (636). Theresulting interval is passed with the domain pixel center to the genericpoint resolver (638), which ejects the resulting point for laterprocessing.

Processing:

The buffered path resolver embodiment (636) receives domain pointsgenerated from the center of a pixel (and converted to domaincoordinates). Some points may not be valid domain points and the bitmaprender loop (640) would designate a non-domain value for the pixel.

FIG. 39: Hybrid Bitmap Iterator Embodiment

FIG. 39 shows the Hybrid Bitmap Iterator Embodiment incorporating twomethods for finding pixel values. Two additional components areutilized. In a high-speed computer gaming environment, obtainingcomplete resolving of all pixel centers may be too expensive. By havinga process which looks for domain intervals in the direction of travel,the most important pixels can be quickly resolved.

Input:

Bitmap target area: specify an area of interest in the domain.

Output:

Resolved Point:

A series of resolved points are ejected one-by-one. A resolved pointincludes the potential banding and field banding (or its equivalent ofpotential and field lines). Components: also see components from FIG.38, Pixel Center Bitmap Iterator Embodiment.

Priority Adjacency Chain Method (648)

This component finds domain intervals adjacent to fully resolvedintervals, and resolves the new domain intervals using an enhancedGeneric resolving chain embodiment (606) described in FIG. 33, GenericAnchored Chain Embodiment. Note that this full embodiment is alreadyincorporated into the buffered path resolver embodiment (636) and neednot be replicated.

Here, the priority for finding adjacent intervals is based on areas ofhigh interest. For example, in traveling deeper (toward a boundary), themost important intervals are the intervals in front of the direction oftravel. Directional derivatives and actual banding data can determinewhich adjacent intervals will soon be encountered and are not yetresolved; these are given priority. In a limited amount of time (such asit is in a gaming situation), this type of processing is critical.

Suppose the memory for storing resolved intervals is a simple binarysubdivision of the domain coordinates. The level of detail of the finalpixel resolution determines the smallest size domain interval which isuseful. Further subdivision provides insignificantly more detail.

Memory Focus Manager (646)

The memory focus manager is used to oversee the best use of memory forthe subdivision of resolved intervals which are created and saved in thebuffered escape pathfinder method (632). Intervals outside the targetarea can be deleted from memory to make way for additional resolvedintervals which are needed for the target area. Also, if two resolvedintervals represent a small enough area at the same escape iterationcount, then they can be coalesced into a single interval to save memory.

Buffered Escape Pathfinder Method (632)

This component is enhanced to allow direct access by the priorityadjacency chain method (648). Additional access is needed to findprioritized intervals adjacent to resolved intervals and to updateadjacent intervals when they are resolved by the priority adjacencychain method (648). Also, access hooks are required that allow anexternal component (such as the memory focus manager (646)), to purgeresolved intervals.

Processing:

In a gaming environment, the adjacency method of resolving intervalswould typically run in high priority, and when it completes, the pixelcenter algorithm would take over to finish any detail within the givenamount of time.

FIG. 40: Automatic Transformer Embodiment

FIG. 40 shows the Automatic Transformer Embodiment which is used toautomatically orient and scale a view of the iterated function. Thederivatives of an iterated domain point, called the key domain point,are used to automatically generate a viewport transformation.

Input:

Key domain point: specify an point in the domain. For example, in acomputer game, the key domain point might be the location of the gameuser within the domain.

Output:

Transformation:

An output specification (such as a 3.times.3 transformation matrix) fordefining a mapping between the domain and pixel coordinates.

Components:

Traditional Derivative Iterator (572)

This method refers to the traditional iteration method of calculatingderivatives. See FIG. 27, Traditional Decomposition Interval Embodiment.Alternatively the derivatives can be calculated using the self windingand the winding digit adjustment so that the full banding data is known.

Orientation Adjuster (652)

This component determines a rotation of the coordinate systemappropriate to artistic taste or maximum gaming pleasure. For example,if the gamer is in a moving “spaceship” located at the key domain point,then the rotation is such to always show the view as would be seen fromlooking from the spaceship in the direction of movement. This is verysimple when the movement is taken in the domain coordinate system.However, if the direction of movement is in the codomain, such astraveling along a specific field line, then directional derivatives canbe taken and used for the Sin and Cosine of the rotation matrix.

Automatic Zoomer (658)

This component is used to automatically set the scaling factor, so that,the open domain area surrounding the key domain point, is aestheticallyproportioned. One simple method is to use the classic technology ofestimating the distance to the boundary (i.e. the open domain area) bydividing the classic potential value by the absolute value of itsderivative. This gives the domain distance. Then the zoom's scalingfactor is set so that this distance is set to some fraction of theoverall domain coordinates which are visible in the graphics viewportfor the display or printing. For example, if the estimated distance tothe boundary is given as 0.0001, then the scaling is set so that adimension of 0.001 in domain coordinates is mapped to fit the bitmapdimension. In this case, the amount of open space surrounding the keydomain point will be approximately 1/10 of the dimensions of the bitmapimage.

Another more elaborate approach is to use the decomposition intervalmethod (610) as described in FIG. 34, which would allow setting theviewport based on the geometry of the most immediate area.

Operation:

Once a key domain point is specified, it is iterated by using thetraditional derivative iterator (572).

The directional derivatives are used to set the rotation using theorientation adjuster (652). The derivatives are also used to set apredetermined or aesthetic scaling factor using the automatic zoomer(658). Finally, the key point itself is used to setup the propertranslation.

FIG. 41: Generic Visualizer Embodiment

FIG. 41 shows the Generic Visualizer Embodiment: which automaticallytransforms and draws a full bitmap image with viewport transformationdetermined automatically.

Input:

Key domain point: specify an area of the domain.

Output:

Bitmap Image:

This is a bitmap image containing the results of all pixel processing.

Components:

Automatic Transform Embodiment (660)

This method refers to the entire embodiment of FIG. 40, AutomaticTransformer Embodiment.

Viewport Target Selector (659)

This component uses a transformation to build a bitmap target areaparameter.

Generic Bitmap Iterator (662)

This component is any bitmap iterator which produces iterated point datafor the an iterated function. For example, it could be a traditionaliteration without field banding, or the more advanced embodiments ofFIG. 38 Pixel Center Bitmap Iterator Embodiment, or FIG. 39, HybridBitmap Iterator Embodiment. The resulting values are output for laterprocessing.

Pixel Processor (664)

This component takes the resolved points, and based on the potential andfield values, converts the values to pixels. In particular, the doublecoordinate system can be used for texture mapping and surface modeling.

Operation:

A key domain point is specified. For example, this value may originatefrom a user's mouse click or be automatically generated during a movieimaging process which automatically navigates a predetermined codomainpath. This single input can then be used to generate a transformationusing the automatic transform embodiment (660). Based on the windowingsystem or printer system, the viewport target selector (659) sets up thecoordinate transformation between the domain and the pixel bitmap targetarea. The generic bitmap iterator (662) generates points, typicallyincluding both potential and field line data and derivatives. Finally,the pixel processor transforms the iterated data into pixel values fordisplay or printing.

CONCLUSION, RAMIFICATIONS, AND SCOPE

The emphasis of this document is on establishing the core technology forhigh-speed processing of field line data for the purpose of analyzingand visualizing iterated functions. Three core technologies werediscussed for reliably finding field line values: self winding complexinterval processing from the prior patent application, called theOptimal Interval Method; the method using self winding and winding digitadjustments with decomposition regions, called the AdjustedDecomposition Region Method; and, the degenerate method of decompositionregions where the winding digit adjustment is zero, called theDecomposition Region Method. For those who wish to avoid building largebuffers of domain intervals, there are also the simpler forms ofiterating only a single point using self-winding to obtain a modulopoint, or possibly a codomain point: this method is called the SelfMethod.

How do these compare in terms of robustness, complexity, andperformance?

Technology Methods:

Optimal Interval Method:

The interval method is best implemented using optimal complex, ormetacomplex, intervals. Optimal intervals are probably essential becauseother interval methods, although faster, rapidly increase in size sothat they are probably unusable. However, the small amount of testingindicates that they work reasonably well and generate domain intervalsizes that are in the same magnitude as the decomposition intervals.They are also extremely robust and require no fine tuning or estimates.They can be slow because of the many conversions and normalizations,even for basic functions such as complex multiplication. The history ofchaos functions also indicates that higher precisions can be veryrewarding. However, for complex intervals, this requires writing a lotof code to handle the various high precision functions needed to obtainoptimal intervals.

Adjusted Decomposition Method:

The decomposition method produces domain intervals similar in size tothe complex intervals. Although no special functions are required, thebasic process does require taking derivatives. However, derivatives aretypically expressions involving only multiplies and adds, and the costsappear to be far less than the interval method. However, thedecomposition method does require some care to make sure that variousconstants which regulate the size of decomposition quantified intervalsare small enough to disambiguate the correct field band. Also, theinherent methods to create derivatives are extremely useful fordirectional navigation; of course, directional navigation can be doneusing complex intervals too, but direction navigation not a freeside-effect.

Another side-effect of taking derivatives, is that using forms of Taylorseries expansions, the values of nearby points and derivatives can beestimated very accurately (depending upon the number of partials taken)so that iterations for nearby points might be able to be eliminated.More work is needed in this area.

Decomposition Region Method:

The traditional decomposition method is simply a degenerate form of thedecomposition method which eliminates self-winding and winding digitadjustments. This method can certainly work but a price is paid.Although I have not experimented with this technology, it seems evidentthat it will have problems. When the precision escape distance is keptvery small, such as equal to the global escape distance, thendiscontinuities will likely appear to separate potential bands. If theprecision escape distance is made very large, many intervals will beneeded. Thus, it is likely to work, but could be excessively slow. Sowhy use this method when the Adjusted Decomposition Method with thenearly the same simplicity and performance? I think the decompositionregion method is not too useful at this time.

Self Method:

When domain intervals are not used, then resolving is usually limited.Consider first the methods of prior art as described earlier. Here,regions can be constructed, but there is no way to differentiate regionsat the same potential level. Yet, it does produce a local dualcoordinate system as evidenced by the prior art.

However, the prior art does not support self-winding. With a selfwinding method, the regions can be kept large and continuity existsacross potential bands. Even more importantly, the self winding appearsto generate codomain points for some Julia sets. I say “appears” becauseI have performed very limited testing. Other iteration tests, such as onthe Mandelbrot, have shown that accurate codomain points, those withcorrect field band integers, cannot be guaranteed. Of course, selfwinding always works to generate codomain points when the initial pointis beyond the global escape distance.

None-the-less, like many strange algorithmic tricks, the Self Method cangenerate interesting images.

Higher Dimensions:

All of the above methods should be applicable to higher dimensions, suchas the four dimensions for the quaternion number system, a truegeneralization of complex numbers. Corollaries exist for the real axisand for field lines, but there are three field lines representing the i,j, and k axes. As described in the prior patent application, the optimalcomplex intervals work exactly the same in higher dimensions. Verylikely the decomposition regions also work in the same manner. So, isthere any difference in the effectiveness of these methods? I don'tknow, but it is worth pointing out that the overhead for performingOptimal Interval Method does not significantly increase, but findingderivatives for the Adjusted Decomposition Method would be moredifficult.

What is claimed is:
 1. A machine executed codomain point resolver methodto convert a predetermined modulo point into a receiver codomain pointby setting the field band integer of said predetermined modulo pointbased on a predetermined donor codomain point, comprising: (A) providinga codomain same level resolver means to set said field band integerbased on disambiguating the enclosing decomposition region of saidpredetermined modulo point based on input of the field band fraction ofsaid modulo point and the donor field band from said predetermined donorcodomain point, (B) optionally providing a codomain up level resolvermeans to set the receiver field band integer by calling said codomainsame level resolver means on the field band fraction of saidpredetermined modulo point and the field band of said donor codomainpoint after adjusting the field band of said donor codomain point toappear to have a higher escape iteration count which matches the escapeiteration count of said predetermined modulo point, (C) optionallyproviding a codomain down level resolver means to set the receiver fieldband integer by calling said codomain same level resolver means on thefield band fraction of said predetermined modulo point and the fieldband of said donor codomain point after adjusting the field band of saiddonor codomain point to appear to have a lower escape iteration countwhich matches the escape iteration count of said predetermined modulopoint, (D) providing a codomain resolve chooser means which chooses ameans from those available in (A), (B), or (C) based on comparing escapeiteration counts of said predetermined modulo point and saidpredetermined donor codomain point.
 2. The machine executed codomainpoint resolver method of claim 1 wherein at least one of the optionallyprovided means of said codomain up level resolver means of (B) and saidcodomain down level resolver means of (C), is available for saidcodomain resolve chooser means of (D).
 3. The machine executed codomainpoint resolver method of claim 1, wherein both of the optionallyprovided means of said codomain up level resolver means of (B) and saidcodomain down level resolver means of (C), are present and useable bysaid codomain resolve chooser means of (D).
 4. A programmed machinecomprising: one or more processors; machine storage that storesinstructions for performing the method of claim
 1. 5. A programmedmachine comprising: one or more processors; machine storage that storesinstructions for performing the method of claim
 2. 6. A programmedmachine comprising: one or more processors; machine storage that storesinstructions for performing the method of claim 3.